ذخيره و بازيابی داده توسط ADO.NET (بخش ششم)
آنچه تاکنون گفته شده است : |
در بخش های قبل اين مقاله به نقش اساسی Data Set در ارتباط با ذخيره و بازيابی داده اشاره گرديد . علاوه بر Data Set ، می توان دستوراتی را مستقيما" بر روی يک Connection بانک اطلاعاتی انجام داد . شی Connection سه متد زير را در ايـن رابطه ارائه نموده است :
-
ExecuteScalar : متد فوق ، يک Query را اجراء نموده و در ادامه صرفا" يک مقدار را بر می گرداند(نظير شمارش تعداد رکوردهای موجود در يک جدول بانک اطلاعاتی )
-
ExecuteNonQuery : متد فوق ، دستوراتی نظير INSERT,UPDATE و DELETE را که باعث اعمال تغييرات در بانک اطلاعاتی می گردند را اجراء نموده و تعداد سطرهای متاثر از اجرای دستور را برمی گرداند .
-
ExecuteReader : متد فوق ، باعث خواندن رکوردها ی موجود در بانک اطلاعاتی به صورت ترتيبی می گردد.
برای استفاده از متدهای فوق ، مراحل زير را دنبال می نمائيم :
- ايجاد يک Connection با بانک اطلاعاتی
- باز نمودن Connection
- ايجاد يک شی Command شامل دستور SQL و يا Stored Procedure که می بايست اجراء گردد .
- اجرای متد مورد نظر در ارتباط با شی Command
- بستن Connection ايجاد شده با بانک اطلاعاتی
برگرداندن يک مقدار از بانک اطلاعاتی
در بخش دوم اين مقاله با نحوه اضافه نمودن و يا حذف سطرهائی از يک Data Set و بهنگام سازی بانک اطلاعاتی از طريق Data Set آشنا شديم . در اين رابطه لازم است به اين موضوع اشاره گردد که در برخی موارد لازم است که در ابتدا اطلاعاتی از بانک اطلاعاتی بازيابی و در ادامه رکورد مورد نظر به بانک اطلاعاتی اضافه گردد . ( بازيابی اطلاعات قبل از درج رکورد جديد در بانک اطلاعاتی ) . مثلا" زمانی که رکوردی دارای يک فيلد کليد منحصر بفرد می باشد ، نظير فيلد ID در بانک اطلاعاتی نمونه Contact ، لازم است در ابتدا يک مقدار منحصربفرد جديد برای هر رکورد اخذ و در ادامه رکورد مورد نظر را در بانک اطلاعاتی اضافه نمود . در اين رابطه می توان از روش های متعددی به منظور دريافت يک مقدار کليد منحصربفرد جديد ، استفاده نمود . ساده ترين روش در اين رابطه ، ايجاد يک شی Command و استفاده از متد ExecuteScalar به منظور برگرداندن يک مقدار می باشد . با توجه به نوع بانک اطلاعاتی می توان از دو نوع متفاوت اشياء Command استفاده نمود :
- اشياء SqlCommand ، باعث اجرای دستورات بر روی يک Connection مربوط به بانک اطلاعاتی SQL می گردند .
- اشياء OleDBCommand ، باعث اجرای دستورات بر روی يک Connection مربوط به بانک اطلاعاتی OLE می گردند .
کد زير تعداد رکوردهای موجود در جدول Orders را با استفاده از تابع Count برمی گرداند .
VB.NET ::Returning A value from a DataBase |
Dim ordersCMD As SqlCommand = New SqlCommand("SELECT Count(*) FROM Orders", nwindConn) |
از متد ExecuteScalar ، می توان به همراه هر عبارت SQL که قادر به برگرداندن يک مقدار می باشد ، استفاده نمود .
تغيير رکوردهای موجود در يک بانک اطلاعاتی
متد ExecuteNonQuery ،دستوراتی را اجراء می نمايد که يک Data Set را بر نمی گردانند (نظير دستورات INSERT , DELETE و يا UPDATE ) . به منظور اجرای دستوراتی اينچنين در ابتدا با استفاده از دستورات SQL و Connection مربوطه يک شی Command را ايجاد نموده و در ادامه می توان از متد ExecuteNonQuery مربوط به شی Command استفاده نمود. کد زير با اجرای دستور INSERT ، يک رکورد را در بانک اطلاعاتی با استفاده از ExecuteNonQuery درج می نمايد .
VB.NET ::Insert Record Directly in a DataBase |
Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") |
متد ExecuteNonQuery از Connection بانک اطلاعاتی استفاده نموده و در اين رابطه از Data Adapter و يا يک Data Set ، استفاده نمی شود.در صورتی که تغييراتی در يک جدول بانک اطلاعاتی با استفاده از متد فوق انجام شود ، می بايست Data Set مربوطه را که متاثر از تغييرات فوق می باشد را با فراخوانی متد Fill ، بهنگام نمود.
بازيابی رکوردها ی موجود در يک بانک اطلاعاتی
متد ExecuteReader دستوراتی را که باعث برگرداندن رکوردهائی می شوند ، اجراء می نمايد. ( نظير يک عبارت SQL SELECT ) .هر رکورد به عنوان يک شی Data Reader برگردانده می شود. که نوع خاصی از يک Data Set و با ويژگی فقط خواندنی است . با توجه به اينکه متد ExecuteReader مستقيما" بر روی Connection بانک اطلاعاتی عمل خواهد نمود ، دو نوع ( نسخه ) متفاوت از شی Data Reader وجود دارد : OleDbDataReader و SqlDataReader .
استفاده از متد ExecuteReader برای ايجاد اشياء Data Reader ، دارای کارائی بمراتب بهتری در مقايسه با ايجاد Data Set از يک Data Adapter بوده ( در هر لحظه يک سطر در حافظه مستقر می گردد ) ولی انعطاف پذيری آن کمتراست. اشياء Data Reader ، به صورت فقط خواندنی بوده و امکان خواندن رکوردها بصورت ترتيبی و صرفا" به سمت جلو( Forward ) وجود خواهد داشت ( هر لحظه يک رکورد ) . با استفاده از Data Set ، امکان دريافت رکوردهای بمراتب بيشتری با هر نوع اولويت وجود داشته و در ادامه می توان پس از اعمال تغييرات آنان را مجددا" در بانک اطلاعاتی درج نمود .
کد زير ، نحوه استفاده از متد ExecuteReader به منظور بازيابی اطلاعات از بانک اطلاعاتی را نشان می دهد .
VB.NET ::Retrieving Records Directly from DataBase |
<%@ Page Language="vb" %> |
شی Data Reader ، شامل مجموعه ای از رکوردها با ويژگی Read-Forward بوده و متد Read تا زمانی که به انتهای مجموعه رکوردهای موجود در Data Reader نرسيده باشد ، اقدام به خواندن آنان می نمايد .
نظرات شما عزیزان: